//
// Created by pzw on 24-3-19.
//

#ifndef QTTEST_ITRADAPTER_H
#define QTTEST_ITRADAPTER_H

#include <vector>
#include <list>
#include <algorithm>
#include <iostream>

class ItrAdapter {
public:/* 反向迭代器 */
    static void reverse_itr_test(std::vector<int> &v, std::list<char> &lst);
    template<typename C, typename Val>
    static auto find_last(C &c, Val v) -> decltype(c.begin());
    template<typename C, typename Val>
    static auto find_last2(C &c, Val v) -> decltype(c.begin());
    template<typename C, typename Val>
    static auto find_last3(C &c, Val v) -> decltype(c.begin());
public:/* 插入迭代器 */
    static void std_insert_itr(std::vector<int> &v_insert_ptr,
                               std::vector<int> &v_back_insert,
                               std::list<int> &lst_front_insert);
    static void std_make_move_itr();
public:/* 移动迭代器 */
};

int ItrAdapter_main();

#endif //QTTEST_ITRADAPTER_H
